package messages

// ProcessorCommand 是所有处理器命令的基础接口
type ProcessorCommand interface {
	isProcessorCommand()
}

// ProcessorResponse 是所有处理器响应的基础接口
type ProcessorResponse interface {
	isProcessorResponse()
}

// InitProcessorCommand 是初始化处理器的命令
type InitProcessorCommand struct {
	// ProcessorType 是处理器类型
	ProcessorType string
	// Config 是处理器配置
	Config map[string]interface{}
}

func (*InitProcessorCommand) isProcessorCommand() {}

// InitProcessorResponse 是对InitProcessorCommand的响应
type InitProcessorResponse struct {
	// Success 表示操作是否成功
	Success bool
	// Error 是操作失败时的错误消息
	Error string
	// ProcessorID 是处理器ID
	ProcessorID string
}

func (*InitProcessorResponse) isProcessorResponse() {}

// ProcessDataCommand 是处理数据的命令
type ProcessDataCommand struct {
	// ProcessorID 是处理器ID
	ProcessorID string
	// Data 是要处理的数据
	Data []byte
	// Metadata 是数据元数据
	Metadata map[string]string
}

func (*ProcessDataCommand) isProcessorCommand() {}

// ProcessDataResponse 是对ProcessDataCommand的响应
type ProcessDataResponse struct {
	// Success 表示操作是否成功
	Success bool
	// Error 是操作失败时的错误消息
	Error string
	// ProcessedData 是处理后的数据
	ProcessedData []byte
	// OutputMetadata 是输出元数据
	OutputMetadata map[string]string
}

func (*ProcessDataResponse) isProcessorResponse() {}

// CloseProcessorCommand 是关闭处理器的命令
type CloseProcessorCommand struct {
	// ProcessorID 是处理器ID
	ProcessorID string
}

func (*CloseProcessorCommand) isProcessorCommand() {}

// CloseProcessorResponse 是对CloseProcessorCommand的响应
type CloseProcessorResponse struct {
	// Success 表示操作是否成功
	Success bool
	// Error 是操作失败时的错误消息
	Error string
}

func (*CloseProcessorResponse) isProcessorResponse() {}

// GetProcessorStatusCommand 是获取处理器状态的命令
type GetProcessorStatusCommand struct {
	// ProcessorID 是处理器ID
	ProcessorID string
}

func (*GetProcessorStatusCommand) isProcessorCommand() {}

// GetProcessorStatusResponse 是对GetProcessorStatusCommand的响应
type GetProcessorStatusResponse struct {
	// Success 表示操作是否成功
	Success bool
	// Error 是操作失败时的错误消息
	Error string
	// Status 是处理器状态
	Status string
	// Metrics 是处理器指标
	Metrics map[string]interface{}
}

func (*GetProcessorStatusResponse) isProcessorResponse() {}

// ListProcessorTypesCommand 是列出处理器类型的命令
type ListProcessorTypesCommand struct{}

func (*ListProcessorTypesCommand) isProcessorCommand() {}

// ListProcessorTypesResponse 是对ListProcessorTypesCommand的响应
type ListProcessorTypesResponse struct {
	// Success 表示操作是否成功
	Success bool
	// Error 是操作失败时的错误消息
	Error string
	// Types 是处理器类型
	Types []ProcessorTypeInfo
}

func (*ListProcessorTypesResponse) isProcessorResponse() {}

// ProcessorTypeInfo 表示处理器类型信息
type ProcessorTypeInfo struct {
	// Name 是处理器类型名称
	Name string
	// Description 是处理器描述
	Description string
	// ConfigSchema 是处理器配置模式
	ConfigSchema map[string]interface{}
}
